package net.j4love.spring.boot.listener;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.ConfigurableApplicationContext;

/**
 * @author He Peng
 * @create 2017-05-19 11:59
 * @update 2017-05-19 11:59
 * @see
 */

@EnableAutoConfiguration
public class SpringBootApplication {

    public static void main(String[] args) {

        SpringApplication application = new SpringApplication(SpringBootApplication.class);

        // 如过你不想使用这种编程式的注册监听器的方式，可以使用自动注册的方式
        // 添加一个  META-INF/spring.factories 文件 ，
        // 在文件中指定一个 key ： org.springframework.context.ApplicationListener
        // 值为 你的 listener 的全类名
        // 例如 ： org.springframework.context.ApplicationListener=com.example.project.MyListener
        application.addListeners(new ApplicationContextEventListener());

        ConfigurableApplicationContext applicationContext = application.run(args);

        applicationContext.start();

        //  does not support multiple refresh attempts: just call 'refresh' once
        // applicationContext.refresh();

        // stop 并不会导致整个应用退出
        applicationContext.stop();
        applicationContext.close();
    }
}
